package fr.demos.cinepantin.controleur;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import fr.demos.cinepantin.Admin;
import fr.demos.cinepantin.Client;
import fr.demos.cinepantin.Panier;
import fr.demos.cinepantin.enumerate.Adresse;
import fr.demos.cinepantin.enumerate.Categorie;
import fr.demos.cinepantin.enumerate.Anciennete;
import fr.demos.cinepantin.enumerate.Civilite;
import fr.demos.cinepantin.enumerate.SupportFilm;
import fr.demos.cinepantin.enumerate.Tva;
import fr.demos.cinepantin.enumerate.Genre;
import fr.demos.cinepantin.util.Compteur;

/**
 * @author CQP-DNT
 * Application Lifecycle Listener implementation class AppliListener
 * 
 */
@WebListener
public class AppliListener implements ServletContextListener, HttpSessionListener {
	
	private Compteur actuel;

	/**
	 * Default constructor.
	 */
	public AppliListener() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see ServletContextListener#contextInitialized(ServletContextEvent)
	 */
	public void contextInitialized(ServletContextEvent sce) {
//    	Compteur global = new Compteur();
    	actuel = new Compteur(); 
    	ServletContext context = sce.getServletContext();
    	context.setAttribute("actuel", actuel);
	}

	/**
	 * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
	 */
	public void sessionCreated(HttpSessionEvent se) {
		// TODO Auto-generated method stub
		HttpSession session = se.getSession();
		session.setAttribute("categorieSession", Categorie.values());
		session.setAttribute("ancienneteSession", Anciennete.values());
		session.setAttribute("tvaSession", Tva.values());
		session.setAttribute("supportFilmSession", SupportFilm.values());
		session.setAttribute("genreSession", Genre.values());
		session.setAttribute("civiliteSession", Civilite.values());
		session.setAttribute("adresseSession", Adresse.values());
		// session.setAttribute("adminSession", new Admin(1,"",""));

		session.setAttribute("panierSession", new Panier());
    //	session.setAttribute("clientSession", new Client());
	// 	session.setAttribute("adminSession", new Admin());
		
    	actuel.incremente();
        

	}

	/**
	 * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
	 */
	public void sessionDestroyed(HttpSessionEvent arg0) {
    	actuel.decremente();
	}

	/**
	 * @see ServletContextListener#contextDestroyed(ServletContextEvent)
	 */
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
	}

}
